/*
 * ================================================================================变量定义区
 */
var optype = ""; //定义操作类型为 create/update
var currentPage = 1;//当前页
var res_url="";//修改前的资源地址
var roleList="";//选中的角色集合
var validateRules = "";//校验规则
/*
 * ================================================================================Page initialization function
 */
$(function()
{
	//获取修改前的资源地址
	res_url = $("#hiddenResUrl").val().trim();
	
	//判断点击类型
	if(res_url!=null && res_url.length>0)
	{
		optype = "update";
		$("#pageName").empty().append("update resource");	
	}
	else
	{
		optype = "create";
		$("#pageName").empty().append("create resource");
	}
	
	//加载验证规则
	setRules();
	
	//启动验证
	$("#resourceForm").validate(validateRules);
	
	//角色选择 单击添加选中角色项
	$('#add').click(function() 
	{
		var $options = $('#select1 option:selected'); 
		$options.appendTo('#select2'); 
	});
	
	//角色选择 单击添加所有角色项
	$('#add_all').click(function() 
	{
		var $options = $('#select1 option');
		$options.appendTo('#select2');
	});
	
	//角色选择 双击添加选中角色项
	$('#select1').dblclick(function() 
	{
		var $options = $("option:selected", this);
		$options.appendTo('#select2');
	});
	
	//角色选择 单击删除选中角色项
	$('#remove').click(function() 
	{
		var $options = $('#select2 option:selected'); 
		$options.appendTo('#select1'); 
	});
	
	//角色选择 单击删除所有角色项
	$('#remove_all').click(function() 
	{
		var $options = $('#select2 option');
		$options.appendTo('#select1');
	});
	
	//角色选择 双击删除选中角色项
	$('#select2').dblclick(function() 
	{
		var $options = $("option:selected", this);
		$options.appendTo('#select1');
	});
	
	//绑定事件
	$("#btnSubmit").bind('click',function()
	{
		submitData();
	});
	
	$("#btnCancel").bind('click',function()
	{
		cancel();
	});
}
);
/*
 * ================================================================================Functions defined area
 * 
 */

//提交按钮事件
function submitData()
{
	var validateResult = $("#resourceForm").validate(validateRules).form();
	if(!validateResult)
	{
		openAlert("请按提示填写完整信息");
		return;
	}
	else
	{	
		$.ajax(
		{
			type: 'POST',
			url :  BASE_PATH +'/resourceManagement/addOrUpdateResouce.do',
			dataType:"json",
			data:
			{
				"resUrl"    : $("#resUrl").val().trim(),
				"id"        : $("#rid").val(),
				"roleName"  : roleList,
				"optype"    : optype
			},
			success : function(data) {
				if(data=='success')
				{
					openAlert('保存成功',function()
					{
						backToCurrentPage();
					});
				}
				else
				{
					openAlert('保存失败');
				}
			},
			error:function(e)
			{
				openAlert('操作失败！错误信息：<div>'+e.responseText+"</div>");
			}
	   });
	}
}

//取消按钮事件
function cancel()
{
	openConfirm('确定取消吗？', null, function() 
	{
		backToCurrentPage();
	});
	
}

/**
 * 返回当前页
 */
function backToCurrentPage()
{
	$("#submitcurrentpage").submit();
}

//设置验证规则
function setRules()
{
	validateRules = 
	{
			rules:
			{
				resUrl:
				{
					required:true,
					remote:
					{
						type:"post",
						async: false,
						url:BASE_PATH+"/resourceManagement/checkResource.do",
						data : 
						{
							resUrl:function()
							{
			                	 return $("#resUrl").val().trim();
			                 },
			                optype:optype,
			                res_url:res_url,
						}
			        },
			        resUrlMaxLength:true,
			        resUrlCheck:true,
			        cheeckResUrl:true,
				},
				
				roleName:
				{
					roleNameNotNull:true,
				}
			},
			messages:
			{
				resUrl:
				{
					required:"请输入RES_URL",
					remote:jQuery.format("RES_URL已经存在，请重新输入"),
					resUrlMaxLength:jQuery.format("RES_URL过长，请重新输入"),
					resUrlCheck:jQuery.format("RES_URL开头不能输入/*"),
					cheeckResUrl:jQuery.format("请输入英文字母、数字、下划线、“*”、“/”、“{}”、“.”"),
				},
				roleName:
				{
					roleNameNotNull:"请选择ROLE_NAME"
				}
			}
		};
	
	//验证role_name是否为空
	$.validator.addMethod("roleNameNotNull",function(value,element)
	{
		roleList = getRoleList();
		var result = true;
		if(roleList==null || roleList == "")
		{
			result = false;
		}
		return result;
	}
	,"请选择ROLE_NAME");
	
	//验证res_url长度是否符合要求
	$.validator.addMethod("resUrlMaxLength",function(value,element)
	{
		var resUrl = $("#resUrl").val().trim();
		var totalLength = checkStringLength(resUrl);
		var result = true;
		//判断长度是否大于数据库长度
		if(totalLength-100>0)
		{
			result = false;
		}
		
		return result;
	}
	,"ROLE_NAME过长，请重新输入！");
	
	//输入res_url开头不允许为“/*”
	$.validator.addMethod("resUrlCheck", function(value, element)
	{
		var resUrl = $("#resUrl").val().trim();
		
		if(resUrl.substr(0,2)!="/*")
		{
			return true;
		}
	}
	,"输入值开头不允许为“/*”！");
	
	//验证输入的res_url是否为英文字母、数字、下划线、“*”、“/”、“{}”、“.”
	$.validator.addMethod("cheeckResUrl", function(value, element)
	{
		return this.optional(element) || /^[\a-\z\A-\Z0-9\.\*\/\_\{}]+$/.test(value);
	}
	,"只能包括英文字母、数字、下划线、“*”、“/”、“{}”、“.”！");
}

/**
 * 获取输入字符串的unicode长度
 * @param name
 * @returns {Number}
 */
function checkStringLength(name){
	var totalLength = 0;
	var charCode = 0; 
	for (var i = 0; i < name.length; i++) 
	{ 
		charCode = name.charCodeAt(i); 
		if (charCode < 0x007f) 
		{ 
			totalLength = totalLength + 1; 
		} 
		else if ((0x0080 <= charCode) && (charCode <= 0x07ff)) 
		{ 
			totalLength += 2; 
		}
		else if ((0x0800 <= charCode) && (charCode <= 0xffff))
		{ 
			totalLength += 3; 
		} 
	} 
	return totalLength;
}	

//获得选中的角色集合
function getRoleList()
{
	
	var $id = $("#select2 option");
	var roles = "";
	
	//若角色数不为0，拼接角色
	for(var i=0;i<$id.size();i++)
	{
		
		var $option = $id.eq(i);
		if(i==($id.size()-1))
		{
			roles += $option.text();
			break;
		}
		roles += $option.text()+",";
	}
	return roles;
	
}

